About the Role
This role is ideal for low-level software developers who are passionate about performance optimisation and interested in applying their skills within a scientific computing environment.
You will work across a multi-language stack (C, C++, Python, Java) and leverage modern CPU and GPU architectures to design and optimise high-performance applications. The role requires strong judgement in selecting the right tools and approaches—balancing efficiency, maintainability, and computational performance.
Key Responsibilities
- Design and develop high-performance scientific processing software
- Implement, test, optimise, and maintain applications across C/C++, Python, and Java
- Analyse and improve existing codebases for performance and scalability
- Work on complex computational problems involving large datasets and parallel processing
- Collaborate with cross-functional teams to deliver rapid product iterations
- Provide advanced (Level 3) technical support for complex client issues
- Review code and contribute to engineering best practices
- Mentor junior engineers and interns within the team
- Continuously build domain knowledge in scientific and computational problem areas
Key Requirements
- Strong expertise in C and/or C++ (additional experience in Python or Java is an advantage)
- Proven experience in low-level performance optimisation, including:
- Multithreading and concurrency
- Memory management and alignment
- Vectorisation (e.g., SIMD, AVX)
- Loop optimisation techniques
- Experience in one or more of the following areas:
- High-performance computing (HPC)
- Large-scale data processing / I/O optimisation
- Parallel or distributed computing
- Numerical or scientific computing
- Strong problem-solving skills with attention to detail
- Excellent communication skills in English (technical and business)